package com.fire.control.system.module.device.service;

import com.fire.control.system.dto.DeviceDTO;
import com.fire.control.system.dto.UserDTO;
import com.fire.control.system.standard.BusinessInterfaceStandard;
import com.fire.control.system.support.protocol.comman.ResponseProtocol;
import com.fire.control.system.support.protocol.device.DeviceRequestProtocol;

/**
 * 
 * @ClassName:  DeviceService
 * @Description:  设备管理业务接口
 * @author:  xiechengguang
 * @date:  2017年5月6日 上午9:38:40
 *
 */
public interface DeviceService extends BusinessInterfaceStandard<DeviceRequestProtocol,ResponseProtocol> {
	
	/**
	* @Title: deviceDetection
	* @Description: TODO(设备检测job)
	* @author wanbo
	* @date  2017年6月29日 下午8:17:02
	*/
	public void deviceDetection();
	
	/**
	 * 
	 * @Title: getSysCount   
	 * @Description: 获取系统数据统计  
	 * @param:  requestProtocol     
	 * @return: ResponseProtocol      
	 * @throws
	 */
	public ResponseProtocol getSysCount(DeviceRequestProtocol requestProtocol, UserDTO user);
	
	/**
	 * @author: xiechengguang 
	 * @Title: getDevices   
	 * @Description: 获取所有设备  
	 * @param:        
	 * @return: ResponseProtocol      
	 * @throws
	 */
	public ResponseProtocol getDevices(DeviceRequestProtocol requestProtocol, UserDTO user);
	
	/**
	 * 
	 * @Title: getDeviceList   
	 * @Description: 获取设备列表  
	 * @param:  requestProtocol     
	 * @return: ResponseProtocol      
	 * @throws
	 */
	public ResponseProtocol getDeviceList(DeviceRequestProtocol requestProtocol);
	
	/**
	 * 
	 * @Title: searchDevices   
	 * @Description: 按条件搜索设备列表  
	 * @param:  requestProtocol      
	 * @return: ResponseProtocol      
	 * @throws
	 */
	public ResponseProtocol searchDevices(DeviceRequestProtocol requestProtocol, UserDTO user);
	
	/**
	 * 
	 * @Title: getDeviceInfo   
	 * @Description: 获取设备详细信息  
	 * @param:  requestProtocol      
	 * @return: ResponseProtocol      
	 * @throws
	 */
	public ResponseProtocol getDeviceInfo(DeviceRequestProtocol requestProtocol);
	
	/**
	 * 
	 * @Title: updateDeviceInfo   
	 * @Description: 修改设备信息  
	 * @param:  requestProtocol      
	 * @return: ResponseProtocol      
	 * @throws
	 */
	public ResponseProtocol updateDeviceInfo(DeviceRequestProtocol requestProtocol);
	
	
	
	/**
	 * 
	 * @Title: getDeviceGroups   
	 * @Description: 获取设备组，不分页  ，用于下拉选
	 * @param:  requestProtocol      
	 * @return: ResponseProtocol      
	 * @throws
	 */
	public ResponseProtocol getDeviceGroups(DeviceRequestProtocol requestProtocol);
	
	
	/**
	 * 
	 * @Title: addDevice   
	 * @Description: 新增设备  
	 * @param:  requestProtocol      
	 * @return: ResponseProtocol      
	 * @throws
	 */
	public ResponseProtocol addDevice(DeviceRequestProtocol requestProtocol);
	
	/**
	 * 
	 * @Title: deleteDevice   
	 * @Description: 删除一个或一组设备  
	 * @param:  requestProtocol     
	 * @return: ResponseProtocol      
	 * @throws
	 */
	public ResponseProtocol deleteDevice(DeviceRequestProtocol requestProtocol);
	
	/**
	 * 
	 * @Title: getDeviceGroupList   
	 * @Description: 获取设备组列表  
	 * @param:  requestProtocol      
	 * @return: ResponseProtocol      
	 * @throws
	 */
	public ResponseProtocol getDeviceGroupList(DeviceRequestProtocol requestProtocol, UserDTO user);
	
	/**
	 * 
	 * @Title: updateDeviceGroupInfo   
	 * @Description: 修改设备组信息  
	 * @param:  requestProtocol      
	 * @return: ResponseProtocol      
	 * @throws
	 */
	public ResponseProtocol updateDeviceGroupInfo(DeviceRequestProtocol requestProtocol, UserDTO user);
	
	/**
	 * 
	 * @Title: getDeviceGroupInfo   
	 * @Description: 根据id获取设备组详细信息  
	 * @param:  requestProtocol      
	 * @return: ResponseProtocol      
	 * @throws
	 */
	public ResponseProtocol getDeviceGroupInfo(DeviceRequestProtocol requestProtocol);
	
	/**
	 * 
	 * @Title: deleteDeviceGroup   
	 * @Description: 删除设备组  
	 * @param:  requestProtocol      
	 * @return: ResponseProtocol      
	 * @throws
	 */
	public ResponseProtocol deleteDeviceGroup(DeviceRequestProtocol requestProtocol);
	
	/**
	 * 
	 * @Title: searchDeviceGroups   
	 * @Description: 搜索设备组  
	 * @param:  requestProtocol      
	 * @return: ResponseProtocol      
	 * @throws
	 */
	public ResponseProtocol searchDeviceGroups(DeviceRequestProtocol requestProtocol, UserDTO user);
	
	/**
	 * 
	 * @Title: searchDeviceByName   
	 * @Description: 根据设备编号或者设备名称查找设备  
	 * @param:  requestProtocol     
	 * @return: ResponseProtocol      
	 * @throws
	 */
	public ResponseProtocol searchDeviceByName(DeviceRequestProtocol requestProtocol, UserDTO user);
	/**
	 * 
	 * @Title: addDeviceGroup   
	 * @Description: 新增设备组  
	 * @param:  requestProtocol     
	 * @return: ResponseProtocol      
	 * @throws
	 */
	public ResponseProtocol addDeviceGroup(DeviceRequestProtocol requestProtocol, UserDTO user);
	
	/**
	 * 
	 * @Title: getDeviceMaintenceList   
	 * @Description: 维保设备列表  
	 * @param:  requestProtocol      
	 * @return: ResponseProtocol      
	 * @throws
	 */
	public ResponseProtocol getDeviceMaintenceList(DeviceRequestProtocol requestProtocol, UserDTO user);
	
	/**
	 * 
	 * @Title: deleteDeviceMaintence   
	 * @Description: 删除维保设备信息  
	 * @param:  requestProtocol      
	 * @return: ResponseProtocol      
	 * @throws
	 */
	public ResponseProtocol deleteDeviceMaintence(DeviceRequestProtocol requestProtocol);
	
	/**
	 * 
	 * @Title: getDeviceMaintenceInfo   
	 * @Description: 维保设备处理详细信息  
	 * @param:  requestProtocol      
	 * @return: ResponseProtocol      
	 * @throws
	 */
	public ResponseProtocol getDeviceMaintenceInfo(DeviceRequestProtocol requestProtocol, UserDTO user);
	
	/**
	 * 
	 * @Title: handleDeviceMaintence   
	 * @Description: 维保处理  
	 * @param:  requestProtocol      
	 * @return: ResponseProtocol      
	 * @throws
	 */
	public ResponseProtocol handleDeviceMaintence(DeviceRequestProtocol requestProtocol, UserDTO user);
	
	/**
	 * 
	 * @Title: searchDeviceMaintences   
	 * @Description: 按条件搜索维保设备列表  
	 * @param:  requestProtocol      
	 * @return: ResponseProtocol      
	 * @throws
	 */
	public ResponseProtocol searchDeviceMaintences(DeviceRequestProtocol requestProtocol, UserDTO user);
	
	/**
	* @Title: getBydevEUI
	* @Description: TODO(根据设备序号查找设备信息)
	* @author wanbo
	* @date  2017年6月16日 上午11:44:22
	* @param devEUI
	* @return
	 */
	public DeviceDTO getBydevEUI(String devEUI);
	
	public DeviceDTO getBydevId(String devId);
	
	
	
	/**
	 * 
	 * @Title: getDevicesByTreeId   
	 * @Description: 根据省、市、区、设备组获取其下的对应设备
	 * @param:  requestProtocol      
	 * @return: ResponseProtocol      
	 * @throws
	 */
	public ResponseProtocol getDevicesByTreeId(DeviceRequestProtocol requestProtocol, UserDTO user);
	
	
	/**
	 * 
	 * @Title: getAllBuildingDevices   
	 * @Description: 根据设备id获取其所在楼栋的所有设备
	 * @param:  requestProtocol      
	 * @return: ResponseProtocol      
	 * @throws
	 */
	public ResponseProtocol getAllBuildingDevices(DeviceRequestProtocol requestProtocol, UserDTO user);
	
	
	
}
